// 导入Shopify API中的交付方法枚举
import { DeliveryMethod } from "@shopify/shopify-api";

/**
 * 隐私相关的Webhook处理器配置
 * 这些是Shopify要求所有应用必须实现的强制性隐私Webhook
 * @type {{[key: string]: import("@shopify/shopify-api").WebhookHandler}}
 */
export default {
  /**
   * 客户数据请求Webhook
   * 当客户向商店所有者请求其数据时，Shopify会调用此隐私webhook
   *
   * https://shopify.dev/docs/apps/webhooks/configuration/mandatory-webhooks#customers-data_request
   */
  CUSTOMERS_DATA_REQUEST: {
    deliveryMethod: DeliveryMethod.Http,
    callbackUrl: "/api/webhooks",
    callback: async (topic, shop, body, webhookId) => {
      const payload = JSON.parse(body);
      // 负载数据结构如下：
      // {
      //   "shop_id": 954889,                    // 商店ID
      //   "shop_domain": "{shop}.myshopify.com", // 商店域名
      //   "orders_requested": [                 // 请求的订单ID列表
      //     299938,
      //     280263,
      //     220458
      //   ],
      //   "customer": {                         // 客户信息
      //     "id": 191167,                       // 客户ID
      //     "email": "john@example.com",        // 客户邮箱
      //     "phone": "555-625-1199"             // 客户电话
      //   },
      //   "data_request": {                     // 数据请求信息
      //     "id": 9999                          // 请求ID
      //   }
      // }
      
      // 在这里实现客户数据导出逻辑
      // 您需要根据payload中的信息导出相关的客户数据
    },
  },

  /**
   * 客户数据删除Webhook
   * 当商店所有者代表客户请求删除数据时，Shopify会调用此隐私webhook
   *
   * https://shopify.dev/docs/apps/webhooks/configuration/mandatory-webhooks#customers-redact
   */
  CUSTOMERS_REDACT: {
    deliveryMethod: DeliveryMethod.Http,
    callbackUrl: "/api/webhooks",
    callback: async (topic, shop, body, webhookId) => {
      const payload = JSON.parse(body);
      // 负载数据结构如下：
      // {
      //   "shop_id": 954889,                    // 商店ID
      //   "shop_domain": "{shop}.myshopify.com", // 商店域名
      //   "customer": {                         // 客户信息
      //     "id": 191167,                       // 客户ID
      //     "email": "john@example.com",        // 客户邮箱
      //     "phone": "555-625-1199"             // 客户电话
      //   },
      //   "orders_to_redact": [                 // 需要删除数据的订单ID列表
      //     299938,
      //     280263,
      //     220458
      //   ]
      // }
      
      // 在这里实现客户数据删除逻辑
      // 您需要根据payload中的信息删除相关的客户数据
    },
  },

  /**
   * 商店数据删除Webhook
   * 商店所有者卸载您的应用后48小时，Shopify会调用此隐私webhook
   *
   * https://shopify.dev/docs/apps/webhooks/configuration/mandatory-webhooks#shop-redact
   */
  SHOP_REDACT: {
    deliveryMethod: DeliveryMethod.Http,
    callbackUrl: "/api/webhooks",
    callback: async (topic, shop, body, webhookId) => {
      const payload = JSON.parse(body);
      // 负载数据结构如下：
      // {
      //   "shop_id": 954889,                    // 商店ID
      //   "shop_domain": "{shop}.myshopify.com" // 商店域名
      // }
      
      // 在这里实现商店数据清理逻辑
      // 您需要删除与该商店相关的所有应用数据
      // 这是GDPR合规性的重要部分
    },
  },
};
